package com.example.administrator.searchpicturetool.util; import android.content.Context; import android.content.Intent; import android.content.res.Resources; import android.net.Uri; import android.os.Environment; import android.view.KeyCharacterMap; import android.view.KeyEvent; import android.view.ViewConfiguration; import com.example.administrator.searchpicturetool.app.APP; import java.io.File; import java.lang.reflect.Method; /** * Created by wenhuaijun on 2015/11/7 0007. */ public class Utils { public static String getSDPath(){ File sdDir; boolean sdCardExist = Environment.getExternalStorageState() .equals(android.os.Environment.MEDIA_MOUNTED); //判断sd卡是否存在 if (sdCardExist) { sdDir = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES);//获取图片目录 }else { sdDir = APP.getInstance().getFilesDir(); } return sdDir.toString(); } //分享图片 public static void startShareImg(String path,Context context){ Intent shareIntent = new Intent(Intent.ACTION_SEND); shareIntent.setType("image/*"); File file = new File(path); Uri uri = Uri.fromFile(file); shareIntent.putExtra(Intent.EXTRA_STREAM, uri); context.startActivity(Intent.createChooser(shareIntent, "请选择")); } public static boolean checkDeviceHasNavigationBar(Context activity) { //通过判断设备是否有返回键、菜单键(不是虚拟键,是手机屏幕外的按键)来确定是否有navigation bar boolean hasMenuKey = ViewConfiguration.get(activity) .hasPermanentMenuKey(); boolean hasBackKey = KeyCharacterMap .deviceHasKey(KeyEvent.KEYCODE_BACK); if (!hasMenuKey && !hasBackKey) { // 没有物理按键则一定有navigationbar,不然怎么退出 return true; } //有物理按键依然可能有navigationbar,给华为,魅族跪了。。 return checkDeviceHasNavigationBarAgain(activity); } private static boolean checkDeviceHasNavigationBarAgain(Context context) { boolean hasNavigationBar = false; Resources rs = context.getResources(); int id = rs.getIdentifier("config_showNavigationBar", "bool", "android"); if (id > 0) { hasNavigationBar = rs.getBoolean(id); } try { Class systemPropertiesClass = Class.forName("android.os.SystemProperties"); Method m = systemPropertiesClass.getMethod("get", String.class); String navBarOverride = (String) m.invoke(systemPropertiesClass, "qemu.hw.mainkeys"); if ("1".equals(navBarOverride)) { hasNavigationBar = false; } else if ("0".equals(navBarOverride)) { hasNavigationBar = true; } } catch (Exception e) { } return hasNavigationBar; } public static int getNavigationBarHeight(Context context) { int navigationBarHeight = 0; Resources rs = context.getResources(); int id = rs.getIdentifier("navigation_bar_height", "dimen", "android"); if (id > 0 && checkDeviceHasNavigationBar(context)) { navigationBarHeight = rs.getDimensionPixelSize(id); } return navigationBarHeight; } }